// 阿里云OSS配置
export const OSS_CONFIG = {
  // 这些配置应该从环境变量或后端API获取，不要硬编码在前端
  region: 'oss-cn-hangzhou',
  accessKeyId: 'your_access_key_id',
  accessKeySecret: 'your_access_key_secret',
  bucket: 'your_bucket_name',
  // 上传文件的前缀路径
  uploadPath: 'medical-images/',
  // 文件大小限制 (100MB) - 支持更大的文件
  maxFileSize: 100 * 1024 * 1024,
  // 支持的文件类型
  allowedFileTypes: ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/webp'],
  // 分片上传的阈值 (10MB) - 降低阈值，更多文件使用分片上传
  multipartThreshold: 10 * 1024 * 1024,
  // 分片大小 (2MB) - 增大分片大小，提高上传效率
  partSize: 2 * 1024 * 1024,
  // 并发上传的分片数
  parallel: 4,
  // 重试次数
  retries: 3,
  // 超时时间 (10分钟)
  timeout: 600000,
  // 大文件上传的额外配置
  largeFileConfig: {
    // 超大文件阈值 (50MB)
    superLargeThreshold: 50 * 1024 * 1024,
    // 超大文件分片大小 (5MB)
    superLargePartSize: 5 * 1024 * 1024,
    // 超大文件并发数
    superLargeParallel: 6,
  }
}

// 生成唯一的文件名
export const generateFileName = (originalName: string): string => {
  const timestamp = Date.now()
  const random = Math.random().toString(36).substring(2, 15)
  const extension = originalName.split('.').pop()
  return `${timestamp}_${random}.${extension}`
}

// 验证文件类型
export const validateFileType = (file: File): boolean => {
  return OSS_CONFIG.allowedFileTypes.includes(file.type)
}

// 验证文件大小
export const validateFileSize = (file: File): boolean => {
  return file.size <= OSS_CONFIG.maxFileSize
}
